/*
 * ItemMagicRefineResource.h
 *
 *  Created on: 2014. 3. 24.
 *      Author: mega
 */

#ifndef ITEMMAGICREFINERESOURCE_H_
#define ITEMMAGICREFINERESOURCE_H_

#include <map>

namespace ProjectZ { namespace NResource {

class ItemMagicRefineResource {
public:
	enum MagicRefineType {
		MAGIC_STONE_RATE = 1,	// 마법석 1개당 추가 성공률
		DEFAULT_UPGRADE_VALUE,	// 기본 능력치 상승율
		ITEM_DESTROY_RATE,		// 실패시 아이템 파괴확률_이벤트
		MAGIC_REFINE_RATE_1,	// 마법제련 1단계 기본 성공률
		MAGIC_REFINE_RATE_2,	// 마법제련 2단계 기본 성공률
		MAGIC_REFINE_RATE_3,	// 마법제련 3단계 기본 성공률
		MAGIC_REFINE_RATE_4,	// 마법제련 4단계 기본 성공률
		MAGIC_REFINE_RATE_5,	// 마법제련 5단계 기본 성공률
	};
public:
	struct Flyweight
	{
		int _IDX;
		int _VALUE;
	};
public:
	ItemMagicRefineResource();
	virtual ~ItemMagicRefineResource();

	bool		LoadResource();
	Flyweight * GetFly(MagicRefineType eType);

	bool		GetDefaultRate(NLogic::Item * pItem, int & default_rate);
	bool		GetRatePerMagicStone(int & magic_stone_rate);
	bool		GetItemDefaultUpgradeRate(int & upgrade_rate);
	bool		GetItemDestroyRate(User * pUser, int & destroy_rate);

private:
	void		Clear();

public:
	typedef std::map<int, Flyweight *> MAGICREFINETREE;

private:
	MAGICREFINETREE clsFlyTree;
};

} /* namespace NResource */ } /* namespace ProjectZ */

#endif /* ITEMMAGICREFINERESOURCE_H_ */
